package chapter12.section3;

/*程序12-2：创建一个通信服务器*/
import java.net.*;
import java.io.*;

public class EBankServer {
	public static void main(String[] args) throws IOException {
		ServerSocket serverSocket = null; // 声明一个服务器套接字提供监听服务
		try {
			// 注册服务，申请在指定端口7788提供服务
			serverSocket = new ServerSocket(7788);
			System.err.println("服务器开始运行...");
		} catch (IOException e) {
			System.err.println("无法在 7788端口上提供连接侦听服务.");
			System.exit(1);// 程序退出运行
		}
		// 以下是端口申请成功后，程序开始服务
		Socket clientSocket = null;// 声明一个对应于特定客户端的socket对象变量
		try {
			/*
			 * accept方法用于获得客户端的连接，没有客户端连接时，将阻塞，不往下运行 直到一个客户端的连接请求到达，并实例化一个Socket的实例，对应于此客户端
			 */
			clientSocket = serverSocket.accept();
		} catch (IOException e) {
			System.err.println("建立和客户端的连接时失败.");
			System.exit(1);
		}
		// 获得客户端的地址
		String address = clientSocket.getInetAddress().getHostAddress();
		System.out.println("一个来自" + address + "的连接已经建立，可以通信啦");
		// 利用此clientSocket就可以开始和对应的客户端通信了，代码省略
		clientSocket.close();// 关闭和客户端的通信
		serverSocket.close();// 关闭监听服务
	}
}
